package com.xzq.erp.service;

import com.xzq.erp.domain.dto.PageDTO;
import com.xzq.erp.domain.dto.RoleDTO;
import com.xzq.erp.domain.dto.RolePermissionDTO;
import com.xzq.erp.domain.po.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xzq.erp.domain.query.RolePageQuery;
import com.xzq.erp.domain.vo.RoleVO;

import java.util.List;

/**
 * <p>
 * 系统角色表 服务类
 * </p>
 *
 * @author xzq
 * @since 2025-05-19
 */
public interface ISysRoleService extends IService<SysRole> {

    /**
     * 分页查询角色列表
     * @param query
     * @return
     */
    PageDTO<RoleVO> getRoleList(RolePageQuery query);

    /**
     * 根据角色ID查询权限
     *
     * @param roleId
     * @return
     */
    List<Integer> getRolePermissions(Integer roleId);

    List<String> getRoleIdsPermissions(List<Integer> roleIds);

    /**
     * 添加角色
     * @param roleDTO
     * @return
     */
    void addRole(RoleDTO roleDTO);

    /**
     * 修改角色
     * @param roleDTO
     */
    void updateRole(RoleDTO roleDTO);

    /**
     * 修改角色状态
     * @param roleId
     * @param status
     */
    void updateRoleStatus(Integer roleId, Integer status);

    /**
     * 分配权限
     * @param permissionDTO
     */
    void assignPermissions(RolePermissionDTO permissionDTO);

    /**
     * 删除角色
     * @param id
     */
    void deleteRole(Integer id);
}
